Computer systems may allow multiple processes of a program to be executed concurrently. Concurrent execution of the processes may allow the program to be executed faster or more efficiently to increase the throughput of the computer system.
In processes that implement a control flow model, control flow logic describes a set of conditions and modifications of program state and may be organized by a flow chart, for example. The term ‘process algebra’ is used to refer to a methodology for reasoning about how processes communicate with each other to cooperate on solving a shared problem and how the lifetime of a process is controlled. Although the process algebra may be largely distinct from the internal state-modifying primitives of a process, there are typically interaction points where inter-process communication drives the internal flow chart. These interaction points between processes may be complex in some programs. The complex interaction points may make it difficult to schedule processes for concurrent execution and result in an execution of the program that is less than optimal.